import config from './config.js'

/**
 * @function request
 * @param {string} api - 接口地址
 * @param {string} data - 参数
 * @param {string} method - 方法
 * @param {string} contentType - header类型
 * @param {string} url - 接口前缀
 * @return {Promise} 返回Promise对象
 * @description 封装uniapp的request
 * @author linqi
 *
 */
export default function request(api, method = 'GET', data = {}, contentType = 'json', url = config.baseUrl) {
	const {
		headerKey,
		headerValue
	} = config;
	let header = {
		'content-type': 'application/json'
	};

	if (contentType === 'form') {
		header = {
			// 'content-type': 'application/x-www-form-urlencoded'
			'Content-Type': 'application/json'
		};
	}
	// if (headerKey && headerValue) {
	// 	header = {
	// 		...header,
	// 		// [headerKey]: headerValue
	// 	};
	// }

	// if (api === '/admin/oauth2/token?grant_type=password') {
	// 	header.Authorization = 'Basic cGlnOnBpZw=='
	// }

	// const token = uni.getStorageSync('token') 
	// if (token && api !== '/admin/oauth2/token') {
	// 	header.Authorization = `Bearer ${token}`;
	// }

	if (method == 'GET') {
		return new Promise((resolve, reject) => {
			let fullUrl = url + api;
			HWH5.fetchInternet(fullUrl, { // 示例接口，实际中请使用真实接口
				method,
				headers: header,
				'Content-Type': 'application/json',
			}).then(res => {
				res.json().then(res => {
					resolve(res);
					// 存储到store中作为其他接口调用的参数
					//   this.$store.commit('SAVE_USERINFO',userInfo)
				})
			}).catch(error => {
				HWH5.showToast({
					msg: error.message,
					type: 'w'
				});
				console.log('err = ', error);
			})
		});
	} else {
		return new Promise((resolve, reject) => {
			let fullUrl = url + api;
			HWH5.fetchInternet(fullUrl, { // 示例接口，实际中请使用真实接口
				method,
				headers: header,
				body: JSON.stringify(data),
			}).then(res => {
				res.json().then(res => {
					if (res.code === 200) {
						resolve(res);
					} else {
						HWH5.showToast({
							msg: res.message,
							type: 'w'
						});
					}
					// 存储到store中作为其他接口调用的参数
					//   this.$store.commit('SAVE_USERINFO',userInfo)
				})
			}).catch(error => {
				// HWH5.showToast({
				// 	msg: error.message,
				// 	type: 'w'
				// });
				console.log('err = ', error);
			})
		});
	}

}